package strategy

// Path 表示计算出的路径
type Path struct {
	Source      string           `json:"source"`      // 源节点ID
	Destination string           `json:"destination"` // 目标节点ID
	Links       []*LinkWithAttrs `json:"links"`       // 路径包含的链路
	TotalCost   float64          `json:"totalCost"`   // 总代价
	TotalDelay  float64          `json:"totalDelay"`  // 总时延
	AvailableBW float64          `json:"availableBW"` // 可用带宽（瓶颈链路带宽）
}

// LinkWithAttrs 包含属性的链路
type LinkWithAttrs struct {
	LinkID      string  `json:"linkId"`
	SourceNode  string  `json:"sourceNode"`
	DestNode    string  `json:"destNode"`
	Bandwidth   float64 `json:"bandwidth"`   // 总带宽(Mbps)
	Delay       float64 `json:"delay"`       // 时延(ms)
	Metric      uint32  `json:"metric"`      // 路由度量值
	Utilization float64 `json:"utilization"` // 利用率(0-1)
}

// GraphNode 图节点
type GraphNode struct {
	ID        string
	Adjacents map[string]*LinkWithAttrs
}

// Graph 图结构
type Graph struct {
	Nodes map[string]*GraphNode
}
